TypeScript 98.3%
CSS 0.9%
Shell 0.7%
1// Liste des jeux de diapositives d'un cours (séances, titres, nombre de diapos).2import { NextResponse } from "next/server";3import { apiError, requireEnrollment } from "@/lib/api.ts";4import { requireUser } from "@/lib/auth/session.ts";5import { all } from "@/lib/db/index.ts";6import { normalizeCourse } from "@/lib/learning/helpers.ts";78export async function GET(_req: Request, ctx: { params: Promise<{ course: string }> }) {9 try {10 const user = await requireUser();11 const course = normalizeCourse((await ctx.params).course);12 requireEnrollment(user.id, course);13 const decks = all<{ week: number; title: string; slides: number; sections: number }>(14 `SELECT d.week, d.title,15 COUNT(c.id) as slides,16 COUNT(DISTINCT NULLIF(c.section_title, '')) as sections17 FROM documents d JOIN chunks c ON c.document_id = d.id18 WHERE d.course_code = ? AND d.doc_type = 'slides' AND d.visible_to_students = 119 GROUP BY d.id ORDER BY d.week`,20 course21 );22 return NextResponse.json({ decks });23 } catch (e) {24 return apiError(e);25 }26}27